import React, { useState } from 'react';
import { Form, Input, Button, Message } from '@hi-ui/hiui'

// 类比：SpringBoot 中的 Entity 类
// class UserDTO {
//   private String name;      // ↔ useState 基本类型
//   private String email;     // ↔ useState 基本类型  
//   private List<String> roles; // ↔ useState 数组类型
//   private Map<String, Object> profile; // ↔ useState 对象类型
// }

const UserForm = () => {
    // 类比：@Value 注解注入配置值
    const [user, setUser] = useState({
        name: '王奥林',
        email: 'v-wangaolin1@xiaomi.com',
        role: 'USER',
        department: 'TECH',
        status: 'ACTIVE'
    });

    // 类比：Setter 方法 - 部分更新（类似 Jackson @JsonIgnore）
    const updateUserField = (field, value) => {
        setUser(prev => ({
            ...prev,           // 保持其他字段不变（类似 BeanUtils.copyProperties）
            [field]: value
        }));
    };

    // 类比：批量更新（类似 @ModelAttribute @RequestBody @RequestParam绑定）
    const handleBatchUpdate = (newData) => {
        setUser(prev => ({
            ...prev,
            ...newData,
            updateTime: new Date()  // 自动添加审计字段
        }));
    };

    return (
        <Form labelPlacement="top">
            <Form.Item label="用户名" required>
                <Input
                    value={user.name}
                    onChange={(e) => updateUserField('name', e.target.value)}
                    placeholder="请输入用户名"
                />
            </Form.Item>

            <Form.Item label="邮箱" required validateStatus={!user.email ? 'error' : ''}>
                <Input
                    value={user.email}
                    onChange={(e) => updateUserField('email', e.target.value)}
                    placeholder="请输入邮箱"
                />
            </Form.Item>

            <Button
                type="primary"
                onClick={() => Message.open({
                    title: "保存成功",
                    type: "success",
                })}
                disabled={!user.name || !user.email}
            >
                保存用户
            </Button>
        </Form>
    );
};

export default UserForm